#include <iostream>
#include <cstring>
//#include<stdio.h>
using namespace std;
int n;
int ans=0;
int dx[8]= {-1,-1,0,1,1,1,0,-1}; 
int dy[8]= {0,1,1,1,1,0,-1,-1};
int maz[4][4];
char s[1024];
void dfs(int x,int y )
{
	if (x==n && y==n)
	{
		ans++;
		strcat(s,"\n"); 
		printf("=======\n%s",s);
		return ;
	}
	for (int i=1;i<=8;i++ )
	{
		int xx = x + dx[i-1];
		int yy = y + dy[i-1];
		//printf("(%d,%d)\n",xx,yy);
		if (maz[xx][yy]==0 && xx>0 && xx<=n && yy>0 && yy<=n)
		{
			maz[x][y] = 1;
			//printf("(%d,%d)\n",xx,yy);
			
			char tmp_s[10];	
			memset(tmp_s,0,sizeof(tmp_s));		
			sprintf(tmp_s,"(%d,%d)-->",xx,yy);
			//printf("tmp_s=%s\n",tmp_s);
			strcat(s,tmp_s);
			//printf("%s\n",s);/**/
			dfs(xx,yy);
			maz[x][y] = 0;
		} 
	}
	 
} 
int main()
{
	memset(maz,0,sizeof(maz));
	n = 3;
	maz[2][1] = 1;
	maz[2][2] = 1;
	 
	dfs(1,1); 
	printf("%d\n",ans);
	printf(s);
	return 0;
}

/*
11	12	13		0	0	0
21	22	23		1	1	0
31	32	33		0	0	0


*/ 
